System and method for mining a user&#39;s electronic mail messages to determine the user&#39;s affinities

ABSTRACT

A system and method for mining a user&#39;s e-mail and for generating a list of categories based on the e-mail content. The generated category list is compared to a master category list and those categories included in the generated category list that are not included in the master category list are removed from the generated category list. For each category remaining in the generated category list, the system and method calculates an affinity value, which represents the strength of the user&#39;s relationship to the category. The affinity (i.e., the concept plus the affinity value) may be submitted to an affinity publisher module that uses an affinity publication policy in determining whether or not to publish the affinity.

CROSS REFERENCE TO RELATED APPLICATIONS

[0001] This application claims the benefit of U.S. Provisional PatentApplication No. ______ (attorney docket no. 23452-500-301) entitledKNOWLEDGE SERVER, filed on Jan. 14, 2002, the contents of which areincorporated by reference into this patent application.

[0002] This application is related to the following commonly owned U.S.patent applications, all of which are hereby incorporated by referenceinto the present application: (1) U.S. patent application Ser. No.09/401,581, entitled METHOD AND SYSTEM FOR PROFILING USERS BASED ONTHEIR RELATIONSHIP WITH CONTENT TOPICS, filed Sep. 22, 1999; (2) U.S.patent application Ser. No. ______ (attorney docket no. 23452-509)entitled METHOD AND SYSTEM FOR PROFILING USERS BASED ON THEIRRELATIONSHIP WITH CONTENT TOPICS, filed Jan. 15, 2002; (3) U.S. patentapplication Ser. No. ______ (attorney docket no. 23452-507) entitledSYSTEM AND METHOD FOR PUBLISHING A PERSON'S AFFINITIES, filed Jan. 15,2002; (4) U.S. patent application Ser. No. ______ (attorney docket no.23452-501) entitled SYSTEM AND METHOD FOR CALCULATING A USER AFFINITY,filed Jan. 15, 2002; and (5) U.S. patent application Ser. No. ______(attorney docket no. 23452-505) entitled SYSTEM AND METHOD FORIMPLEMENTING A METRICS ENGINE FOR TRACKING RELATIONSHIPS OVER TIME,filed Jan. 15, 2002.

BACKGROUND OF THE INVENTION

[0003] 1. Field of the Invention

[0004] The present invention relates to the field of knowledgemanagement, and, more specifically, to a system and method for mining auser's electronic mail messages to determine the user's affinities.

[0005] 2. Discussion of the Background

[0006] When a person is attempting to accomplish a task, it is oftenuseful for the person to obtain information from other people who haveknowledge of the topics with which the task is concerned. To do so, theperson must have a way to discover the people who have the informationthe person is seeking to obtain. One way of facilitating this discoveryis to publish people's “affinities,” which are simply links betweenpeople and categories or topics of information. Each affinity mayinclude a value representing the strength of the relationship with thecategory—the higher the value, the greater the person's affinity for thetopic.

[0007] It is possible that publishing a person's affinity (i.e., makingthe affinity known to others) would be inappropriate, either because theaffinity is inaccurate or misleading, or because it reveals an accuraterelationship with a topic that the person does not wish to make public.Therefore, it is important to provide ways for people to judge theirproposed affinities accurately and to avoid affinity publication in suchcases. Recognizing that policies concerning affinity publication may beaffected by different cultures and laws, the solution to these problemsmust be flexible as well.

SUMMARY OF THE INVENTION

[0008] The present invention provides a system and method for mining auser's e-mail (i.e., examining the content of the user's e-mail) and forgenerating a list of concepts (also referred to as categories) based onthe e-mail content. The generated category list is compared to a mastercategory list and those categories included in the generated categorylist that are not included in the master category list are removed fromthe generated category list. For each category remaining in thegenerated category list, the system and method calculates an affinityvalue, which represents the strength of the user's relationship to thecategory. The affinity (i.e., the category plus the affinity value) maybe submitted to an affinity publisher module that uses an affinitypublication policy in determining whether or not to publish theaffinity.

[0009] In one aspect, a method according to the present invention formining e-mails to determine a user's affinities includes the followingsteps: accessing an e-mail system and retrieving from the system thee-mails sent to and from the user; extracting keywords from theretrieved e-mails; generating a list of categories based on theextracted keywords; accessing a master category list; filtering thegenerated category list by removing from the generated list thosecategories that are not included in the master category list; and foreach category remaining in the generated category list, calculating anaffinity value, associating the affinity value with the category, andsubmitting the category and the affinity value to the affinity publishermodule.

[0010] The above and other features and advantages of the presentinvention, as well as the structure and operation of various embodimentsof the present invention, are described in detail below with referenceto the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0011] The accompanying drawings, which are incorporated herein and formpart of the specification, illustrate various embodiments of the presentinvention and, together with the description, further serve to explainthe principles of the invention and to enable a person skilled in thepertinent art to make and use the invention. In the drawings, likereference numbers indicate identical or functionally similar elements.Additionally, the left-most digit(s) of a reference number identifiesthe drawing in which the reference number first appears.

[0012]FIG. 1 is a functional block diagram of a system according to oneembodiment of the present invention.

[0013]FIG. 2 is a flow chart illustrating a process, according to oneembodiment, performed by affinity publisher module.

[0014]FIG. 3 is a flow chart illustrating a process, according to oneembodiment, for publishing a designated affinity.

[0015]FIG. 4 is a flow chart illustrating a process, according to oneembodiment, for enabling a user to declare and publish an affinity.

[0016]FIG. 5 is a flow chart illustrating a process, according to oneembodiment, for mining electronic mail (e-mail).

[0017]FIG. 6 is a flow chart illustrating a process, according to oneembodiment, for creating a master category list.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0018] While the present invention may be embodied in many differentforms, there is described herein in detail an illustrative embodimentwith the understanding that the present disclosure is to be consideredas an example of the principles of the invention and is not intended tolimit the invention to the illustrated embodiment.

[0019]FIG. 1 is a functional block diagram of a system 100 according toone embodiment of the present invention. System 100 includes a computersystem 150 for executing an affinity publisher software module 102 andan affinity discovery software module 104, an affinity publicationpolicy 106, and a storage system 108 that stores a plurality of userprofiles 110 and a plurality of category profiles 166, wherein each userprofile 110 is a set of information that is associated with a particularuser (e.g., profile 110(b) is associated with a user 101), and whereineach category profile 166 is a set of information associated with aparticular category. Storage system 108 includes one or more storagedevices so that user profiles 110 and category profiles 166 need not bestored on the same storage device. A profile can be a single computerfile, one or more computer files, one or more records in a database,etc. Computer system 150 includes one or more computers (not shown).Affinity discovery module 104 functions to monitor the activities ofuser 101 to determine the subject matters (i.e., categories) for whichuser 101 appears to have an affinity, determines the strength of theaffinity for each determined category, and assigns an affinity value tothe determined affinity. As an example, affinity discovery module 104may be operable to access an electronic mail (e-mail) system 187 toexamine the e-mails sent to and from user 101 and may be operable toaccess a document repository 189 to examine the documents authored orviewed by user 101. For example, if user 101 has recently authored andviewed several documents associated with the category of “computersecurity,” then affinity discovery module 104 will know this because itmonitors user 101 's document activity. Consequently, affinity discoverymodule 104 will determine that user 101 appears to have an affinity for“computer security” based on user 101's document activity. Additionally,affinity discovery module 104 will assign an affinity value to theaffinity. The affinity value represents the strength of user 101'saffinity for the category.

[0020] After affinity discovery module 104 determines that user 101appears to have an affinity for a particular category and assigns anaffinity value to the affinity, module 104 submits the “affinity” toaffinity publisher module 102. That is, module 104 submits the name ofthe category and the calculated affinity value to module 102.

[0021] Upon receiving a submitted affinity, affinity publisher module102 applies an affinity publication policy 106 to determine whether itshould publish user 101's apparent affinity for the particular category.Affinity publication policy 106 includes rules and other informationthat govern the publication of affinities. In one embodiment,publication policy 106 can only be created and modified by an affinityadministrator 103. In other embodiments, affinity administrator 103 aswell as other users can create and/or modify the affinity publicationpolicy.

[0022] Affinity publication policy 106 preferably includes some or allof the following information: an affinity threshold value, an indicationas to whether publisher module 102 must get permission from a user priorto publishing the user's affinities, an auto-response grace period, asetting for an auto-publish flag, and other information. Otherinformation and other rules can be included in publication policy 106.The ability of administrator 103 to create an affinity publicationpolicy creates a unique advantage because this features allows system100 to be flexible and, thus, easily adapt to different cultures andlaws regarding publication of private information.

[0023] If, based on affinity publication policy 106, module 102determines that it should publish user 101's apparent affinity for theparticular category, then, in one embodiment, module 102 updates one orboth of the user profile 110 associated with user 101 (e.g., userprofile 110(b)) and the category profile 166 associated with theparticular category, so that the update profile indicates that user 101has an affinity for the particular category. The user profile 110 and/orcategory profile 166 is/are also updated to indicate the affinity valueassigned to the affinity.

[0024] Profiles 110 and 166 may be searched by third parties or searchengines. In this way, after affinity publisher module 102 publishes user101's affinity for the particular subject matter, a third person or asearch engine or other system is able to determine that user 101 has anaffinity for the particular category simply by examining profiles 110and/or 166. In this way, a person who seeks to discover individuals whoare likely to have knowledge and/or expertise about a certain topic caneasily do so simply by searching profiles 110/166.

[0025] In one embodiment, system 100 includes a single affinitypublication policy 106 (also referred to as “default affinitypublication policy 106”) that applies to all users whose activities arebeing monitored. In another embodiment, a user whose activities arebeing monitored may have his or her own affinity publication policywhich overrides the default affinity publication policy. That is, when auser has his or her own affinity publication policy, affinity publishermodule 102 uses that affinity publication policy instead of the defaultaffinity publication policy in determining whether or not to publish anaffinity for the user.

[0026]FIG. 2 is a flow chart illustrating a process 200 performed byaffinity publisher module 102 after discovery module 104 determines thatuser 101 appears to have an affinity for a particular category, assignsan affinity value for the apparent affinity, and submits the affinity tomodule 102. Process 200 begins in step 202, where module 102 determineswhether user 101 has his or her own affinity publication policy. If user101 has his or her own affinity publication policy, module 102 selectsthat affinity publication policy (step 204), otherwise, module 102selects default affinity publication policy 106 (step 206). Next (step208), module 102 determines the selected policy's affinity threshold.Next (step 210), module 102 determines whether the affinity valueassigned by discovery module 104 exceeds the determined affinitythreshold. If the assigned affinity value does not exceed the affinitythreshold, the process ends, otherwise the process continues in step212.

[0027] In step 212, module 102 determines whether the publication policyindicates that module 102 must get permission from user 101 prior topublishing user 101's affinities. If the publication policy indicatesthat module 102 must get permission from user 101 prior to publishinguser 101's affinities, then control passes to step 214, otherwisecontrol passes to step 224.

[0028] In step 214, module 102 notifies user 101 of user 101's apparentaffinity for the particular category and requests permission from user101 to publish the affinity. In one embodiment, as described above, acategory profile, such as profile 166(b) is associated with theparticular category. Category profile 166(b) may include: the names ofall of the people that have a published affinity for the particularcategory, the names of the documents (if any) that are linked with orassociated with the particular category, and information concerning therelationship between the particular category and other categories. Inthis embodiment, module 102 may send to user 101 the informationincluded in category profile 166(b) along with the affinity notificationbecause user 101 may find the information included in category profile166(b) useful when determining the accuracy of the affinity and whetheror not to approve publication of the affinity. In one embodiment, theaffinity notification sent to user 101 includes not only the name of acategory and an affinity value associated with the category, but alsoone or more keywords that are associated with the category. Thisadditional information gives user 101 a better context for determiningwhether or not he or she wants to have the affinity published.

[0029] Next (step 216), module 102 determines the auto-response graceperiod for the selected affinity publication policy and sets a timer toexpire when an amount of time equal to the grace period has elapsed.Next (step 218), module 102 waits for a response from user 101 or forthe timer to expire. If a response is received before the timer expires,control passes to step 220, otherwise control passes to step 222.

[0030] In step 220, module 102 determines whether the response indicatesthat user 101 has approved the publication of the affinity. If theresponse indicates that user 101 has approved the publication of theaffinity, control passes to step 224, otherwise the process ends.

[0031] In step 222, module 102 determines whether the selected affinitypublication policy's auto-publish flag is set to TRUE. If it is, controlpasses to step 224, otherwise control passes to step 223, where module102 notifies user 101 that the affinity will not be published becausethe grace period has expired. The process ends after step 223. In step224, module 102 publishes the affinity. In one embodiment, module 102publishes the affinity by updating profile 110(b), which is associatedwith user 101, such that profile 110(b) indicates that user 101 has anaffinity for the particular category. Advantageously, profile 110(b) mayalso be updated to indicate the strength of the affinity. That is, forexample, the affinity value assigned to the affinity can be included inprofile 110(b) along with the information that indicates user 101 has anaffinity for the category. After the affinity is published, module 102may notify user 101 that the affinity was published (step 225).Preferably, in addition to (or instead of) updating profile 110(b),module 102 updates the category profile 166 that is associated with theparticular category so that the category profile indicates that user 101has an affinity for the particular category.

[0032]FIG. 3 is a flow chart illustrating a process 300 for publishing adesignated affinity for user 101. A designated affinity for user 101 isan affinity assigned to user 101 by a third-party, such as user 101'smanager, who may wish to assign an affinity to user 101.

[0033] Process 300 begins in step 302, where user 105 selects acategory, submits the category to module 102, and requests module 102 toupdate user 101's profile (i.e., profile 110(b)) to indicate that user101 has an affinity for the submitted category. In step 306, module 102determines whether user 105 is authorized to designate an affinity foruser 101. If user 105 is not so authorized, process 300 ends, otherwisecontrol passes to step 310. In one embodiment, module 102 determineswhether user 105 is authorized to designate affinities for user 101 byexamining an affinity designator list 190. Preferably, administrator 103controls the list and authorizes a user (such as user 105) to designateaffinities for another user (such as user 101) by adding an entry tolist 190 that indicates that the user has permission to designateaffinities for the other user.

[0034] In step 310, module 102 either selects an affinity value orrequests user 105 to input an affinity value. In step 312, module 102determines whether user 101 has his or her own affinity publicationpolicy, and, if user 101 has his or her own affinity publication policy,selects that affinity publication policy, otherwise, selects defaultaffinity publication policy 106.

[0035] In step 318, module 102 determines whether the publication policyindicates that module 102 must get permission from user 101 prior topublishing the designated affinity. If the publication policy indicatesthat module 102 must get permission from user 101 prior to publishingthe designated affinity, then control passes to step 320, otherwisecontrol passes to step 330.

[0036] In step 320, module 102 notifies user 101 of the proposeddesignated affinity and requests permission from user 101 to publish theaffinity. In step 322, module 102 determines the selected affinitypublication policy's auto-response grace period and sets a timer toexpire when an amount of time equal to the grace period has elapsed. Instep 324, module 102 waits for a response from user 101 or for the timerto expire. If a response is received before the timer expires, controlpasses to step 326, otherwise control passes to step 328.

[0037] In step 326, module 102 determines whether the response indicatesthat user 101 has approved the publication of the designated affinity.If the response indicates that user 101 has approved the publication ofthe designated affinity, control passes to step 330, otherwise theprocess ends.

[0038] In step 328, module 102 determines whether the selected affinitypublication policy's auto-publish flag is set to TRUE. If it is, controlpasses to step 330, otherwise control passes to step 329, where module102 notifies user 101 that the affinity will not be published becausethe grace period has expired. The process ends after step 329.

[0039] In step 330, module 102 publishes the designated affinity. In oneembodiment, module 102 publishes the designated affinity by updatingprofile 110(b), which associated with user 101, such that profile 110(b)indicates that user 101 has an affinity for the submitted category.Advantageously, profile 110(b) may also be updated to indicate thestrength of the affinity. That is, for example, the affinity valueobtained in step 310 can be included in profile 110(b) along with theinformation that indicates user 101 has an affinity for the category.After the affinity is published, user 101 may be notified that theaffinity was published (step 331). Preferably, in addition to (orinstead of) updating profile 110(b), module 102 updates the categoryprofile 166 that is associated with the particular category so that thecategory profile indicates that user 101 has an affinity for theparticular category.

[0040] In addition to publishing derived affinities (that is, affinitiesdetermined by affinity discovery module 104) and designated affinities,module 102 can be configured to allow a user to declare his or her ownaffinities. FIG. 4 is a flow chart illustrating a process for enablinguser 101 to declare and publish an affinity. Process 400 begins in step402, where user 101 selects a category. In step 404, user submits theselected category to module 102. In step 406, module 102 either selectsan affinity value or requests user 101 to submit an affinity value. Instep 408, module 102 publishes the designated affinity.

[0041]FIG. 5 is a flow chart illustrating a process 500, which may beperformed by affinity discovery module 104, for mining electronic mail(e-mail) for the purpose of determining a user's affinities. Process 500begins in step 502, where module 104 accesses e-mail system 187 andretrieves the e-mails sent to and from the user. Next (step 504), module104 extracts keywords from the retrieved e-mails. Next (step 506),module 104 generates a list of categories (or concepts) based on theextracted keywords. Next (step 508), module 102 access a master categorylist 168. Next (step 510), module 104 filters the category listgenerated in step 506 by removing from the list the categories that arenot included in the master category list. Next (step 512), for eachcategory remaining in the generated category list, module 104 calculatesan affinity value, associates the affinity value with the category, andsubmits the category and the affinity value to affinity publisher module102, which then performs process 200.

[0042] The feature of filtering the category list generated in step 506based on the master category list provides a mechanism for protectingthe user's privacy. It protects the user's privacy by ensuring that onlythe user's affinity for categories included in the master category listhave a chance of being published. In other words, there is no chancethat affinity publisher module 102 will publish the user's affinity fora category that is not on the master category list. In this way, system100 provides privacy protection.

[0043] In one embodiment, when module 104 is mining the e-mails receivedby and/or sent from a particular user, module 104 uses keywordsgenerated from the content of one or more of those e-mails to determineaffinities for other users who also received or sent those e-mails. Forexample, if 15 of the e-mails received by user A were also received byor sent from user B, then when module 104 is mining user A's e-mailsmodule 104 can use these 15 e-mails to discover affinities for user B.In this way, module 104 can determine affinities for user B based one-mail content even if user B has not given module 104 permission tomine his or her e-mails.

[0044]FIG. 6 is a flow chart illustrating a process 600, according toone embodiment, for creating master category list 168. Process 600begins in step 602, where a set of documents from one or more documentrepositories (such as repository 189) are accessed. In one embodiment,the set of documents may be selected by administrator 103, but in otherembodiments the set of documents are selected according to othercriteria, such as the author and/or type of document. Next (step 604)keywords are extracted from the set of documents. Next, (step 606), alist of categories (or concepts) based on the extracted keywords isgenerated. Lastly (step 608), categories can be manually added to and/ordeleted from the list as desired.

[0045] While the illustrated processes 200, 300, 400, 500 and 600 aredescribed as a series of consecutive steps, none of these processes arelimited to any particular order of the described steps. Additionally, itshould be understood that the various illustrative embodiments of thepresent invention described above have been presented by way of exampleonly, and not limitation. Thus, the breadth and scope of the presentinvention should not be limited by any of the above-described exemplaryembodiments, but should be defined only in accordance with the followingclaims and their equivalents.

What is claimed is:
 1. A method for mining e-mails to determine a user'saffinities, comprising: accessing an e-mail system and retrieving fromthe system the e-mails sent to and from the user; extracting keywordsfrom the retrieved e-mails; generating a list of categories based on theextracted keywords; accessing a master category list; filtering thegenerated category list by removing from the generated list thosecategories that are not included in the master category list; and foreach category remaining in the generated category list, calculating anaffinity value and associating the affinity value with the category,wherein the affinity value represent the strength of the user'srelationship to the category.
 2. The method of claim 1, furthercomprising the step of submitting a proposed user affinity forpublication, wherein the proposed user affinity includes one of thecategories from the generated category list and the affinity valueassociated with the category.
 3. The method of claim 2, furthercomprising the step of determining an affinity value threshold.
 4. Themethod of claim 3, further comprising the step of determining whetherthe affinity value included in the proposed user affinity exceeds theaffinity value threshold.
 5. The method of claim 4, wherein if theaffinity value included in the proposed user affinity does not exceedthe affinity value threshold, then the proposed user affinity is notpublished.
 6. The method of claim 4, further comprising the step ofpublishing the proposed user affinity if it is determined that theaffinity value included in the proposed user affinity exceeds theaffinity value threshold.
 7. The method of claim 4, further comprisingthe steps of notifying the user of the proposed user affinity andrequesting from the user a response that indicates whether or not theuser wishes to have the proposed user affinity published if it isdetermined that the affinity value included in the proposed useraffinity exceeds the affinity value threshold.
 8. The method of claim 7,further comprising the step of publishing the proposed user affinity ifthe user does not respond to the request for a response within apredetermined amount of time.
 9. The method of claim 7, furthercomprising the steps of: receiving the response from the user;determining whether the response indicates that the user wishes to havethe proposed user affinity published; and publishing the proposed useraffinity if it is determined that the response indicates that the userwishes to have the proposed user affinity published.
 10. The method ofclaim 6, wherein the step of publishing the proposed user affinitycomprises the step of updating a profile associated with the user suchthat the profile indicates that the user has an affinity for thecategory included in the proposed user affinity.
 11. A system for mininge-mails to determine a user's affinities, comprising: means foraccessing an e-mail system and retrieving from the system the e-mailssent to and from the user; means for extracting keywords from theretrieved e-mails; means for generating a list of categories based onthe extracted keywords; means for accessing a master category list;means for filtering the generated category list by removing from thegenerated list those categories that are not included in the mastercategory list; and means for calculating an affinity value for eachcategory remaining in the generated category list, wherein the affinityvalue represent the strength of the user's relationship to the category.12. The system of claim 11, further comprising an affinity publishermodule for receiving a proposed user affinity, wherein the proposed useraffinity includes one of the categories from the generated category listand the calculated affinity value associated with the category.
 13. Thesystem of claim 12, further comprising an affinity publication policythat defines an affinity value threshold.
 14. The system of claim 13,wherein the affinity publisher module comprises means for determiningwhether the affinity value included in the proposed user affinityexceeds the affinity value threshold.
 15. The system of claim 14,wherein if the affinity value included in the proposed user affinitydoes not exceed the affinity value threshold, then the affinity publishmodule will not publish the proposed user affinity.
 16. The system ofclaim 14, wherein the affinity publisher module will publish theproposed user affinity if it is determined that the affinity valueincluded in the proposed user affinity exceeds the affinity valuethreshold.
 17. The system of claim 14, further comprising means fornotifying the user of the proposed user affinity and means forrequesting from the user a response that indicates whether or not theuser wishes to have the proposed user affinity published.
 18. The systemof claim 17, further comprising means for determining whether the userhas not responded to the request within a predetermined amount of time.19. The system of claim 17, further comprising: means for receiving theresponse from the user; means for determining whether the responseindicates that the user wishes to have the proposed user affinitypublished; and publishing means for publishing the proposed useraffinity, wherein, if it is determined that the response indicates thatthe user wishes to have the proposed user affinity published, thepublishing means will publish the proposed user affinity.
 20. The systemof claim 16, wherein the affinity publisher module publishes theproposed user affinity by updating a profile associated with the usersuch that the profile indicates that the user has an affinity for thecategory included in the proposed user affinity.
 21. A computer programproduct for mining e-mails to determine a user's affinities, thecomputer program product being embodied in a computer readable mediumand comprising computer instructions for: accessing an e-mail system andretrieving from the system the e-mails sent to and from the user;extracting keywords from the retrieved e-mails; generating a list ofcategories based on the extracted keywords; accessing a master categorylist; filtering the generated category list by removing from thegenerated list those categories that are not included in the mastercategory list; and for each category remaining in the generated categorylist, calculating an affinity value and associating the affinity valuewith the category, wherein the affinity value represent the strength ofthe user's relationship to the category.
 22. The computer programproduct claim 21, further comprising computer instructions forsubmitting a proposed user affinity for publication, wherein theproposed user affinity includes one of the categories from the generatedcategory list and the affinity value associated with the category. 23.The computer program product claim 22, further comprising computerinstructions for determining an affinity value threshold.
 24. Thecomputer program product claim 23, further comprising computerinstructions for determining whether the affinity value included in theproposed user affinity exceeds the affinity value threshold.
 25. Thecomputer program product claim 24, wherein if the affinity valueincluded in the proposed user affinity does not exceed the affinityvalue threshold, then the proposed user affinity is not published. 26.The computer program product claim 24, further comprising computerinstructions for publishing the proposed user affinity if it isdetermined that the affinity value included in the proposed useraffinity exceeds the affinity value threshold.
 27. The computer programproduct claim 24, further comprising computer instructions for notifyingthe user of the proposed user affinity and requesting from the user aresponse that indicates whether or not the user wishes to have theproposed user affinity published if it is determined that the affinityvalue included in the proposed user affinity exceeds the affinity valuethreshold.
 28. The computer program product claim 27, further comprisingcomputer instructions for publishing the proposed user affinity if theuser does not respond to the request for a response within apredetermined amount of time.
 29. The computer program product claim 27,further comprising computer instructions for: receiving the responsefrom the user; determining whether the response indicates that the userwishes to have the proposed user affinity published; and publishing theproposed user affinity if it is determined that the response indicatesthat the user wishes to have the proposed user affinity published. 30.The computer program product claim 26, wherein the computer instructionsfor publishing the proposed user affinity comprises computerinstructions for updating a profile associated with the user such thatthe profile indicates that the user has an affinity for the categoryincluded in the proposed user affinity.
 31. A computer signal embodiedin a carrier wave readable by a computing system and encoding a computerprogram of instructions for executing a computer process performing themethod recited in claim 1.